2.3 Die Grundform mit WHERE
Gleichzeitige Abfragen von zwei Tabellen
Das eben beschriebene Verfahren wollen wir nun an unseren Tabellen mit Hilfe
von SQL-Anweisungen nachvollziehen. Schließlich macht der Computer
genau das Gleiche. Der wichtigste Teil ist der Vergleich der in Beziehung
stehenden (verbundenen) Spalten. Vergleichen kann man mit einer Bedingung, wie wir aus
der ersten Lektion gelernt haben:
WHERE Tabelle1.Primärschlüssel = Tabelle2.Fremdschlüssel
Für unsere Aufgabe müssen wir in diesen Ausdruck unsere Tabellennamen
und die beiden Attribute, die miteinander in Beziehung stehen, einsetzen:
WHERE tbl_abteilung.abteilung_ID = tbl_mitarbeiter.abteilung_ID
Relevant für das Ergebnis der Abfrage sind nur der Name des Mitarbeiters, sein Abteilungsname
und das Arbeitsgebiet der Abteilung. Wir schreiben also in die erste Zeile:
SELECT name, abteilungsname, abteilung_aufgabengebiet
Natürlich können wir auch hier die Tabellennamen voranstellen (z.B. tbl_mitarbeiter.name), es ist aber nicht nötig, da die Bezeichnung jedes Attributs zwischen beiden Tabellen eindeutig ist.
Jetzt müssen wir in der Abfrage noch sagen, welche Tabellen wir ansehen (also
verbinden) möchten. Das geht natürlich mit
FROM tbl_abteilung, tbl_mitarbeiter
.
Unsere SQL-Abfrage hat nun die Form:
SELECT name, abteilungsname, abteilung_aufgabengebiet FROM tbl_abteilung, tbl_mitarbeiter WHERE tbl_abteilung.abteilung_ID = tbl_mitarbeiter.abteilung_ID
Wir führen die Abfrage aus und sehen: Ja, was wohl? Das sollten Sie nun selbst herausfinden – durch Überlegen oder durch Ausprobieren. Ein mögliches Ergebnis können Sie sich hier ansehen: Abfrage ausführen
Wir wollen unsere Abfrage nun etwas verändern. Entfernen Sie die WHERE
-Zeile,
am Besten durch Ausschneiden – wir brauchen Sie gleich wieder. Was wird nun
passieren wenn wir die Abfrage erneut ausführen?
Abfrage ausführen
Wir haben keinen Vergleich in unserer Abfrage. Es fehlt also das verbindende Attribut. Wir sehen also nicht in der Spalte abteilung_id nach und wissen nicht, welche Abteilung zu welchem Mitarbeiter gehört. Trotzdem wollen wir die gewünschten Datensätze aus beiden Tabellen angezeigt bekommen. Sie müssen diese Abfrage nicht ausführen. Das Ergebnis ist nicht etwa leer, sondern eine Kombination jedes Mitarbeiters mit jeder Abteilung. Das ist sogar mit unseren kleinen Tabellen schon eine ganze Menge. Man nennt diese Kombination auch Kreuzprodukt.
In dem folgendem Bild soll das Kreuzprodukt von Tabellen einmal visuell für Sie dargestellt werden: